When an UNC-style path is passed into openTempFile, the returned file
starts with that same style of path. Which can cause problems, eg piping
that filename to git failed. So, convert the output filename to be
relative to the input temp directory.
-- https://github.com/haskell/file-io/issues/39
import Utility.Path.Windows
import Utility.OsPath
+import System.OsPath
import System.IO (IO, Handle, IOMode)
+import Prelude (return)
import qualified System.File.OsPath as O
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
openTempFile :: OsPath -> OsPath -> IO (OsPath, Handle)
openTempFile p s = do
p' <- toOsPath <$> convertToWindowsNativeNamespace (fromOsPath p)
- O.openTempFile p' s
+ (t, h) <- O.openTempFile p' s
+ -- Avoid returning mangled path from convertToWindowsNativeNamespace
+ let t' = p </> takeFileName t
+ return (t', h)
#endif
#else